﻿// ***********************************************************************
// Assembly         : Logica
// Author           : Diego
// Created          : 03-02-2014
//
// Last Modified By : Diego
// Last Modified On : 03-02-2014
// ***********************************************************************
// <copyright file="LOG_Estructura.cs" company="">
//     Copyright (c) . All rights reserved.
// </copyright>
// <summary></summary>
// ***********************************************************************
using AccesoDatos.Modulos.ClasesAccesoDatos;
using Modelado.Modulos.ClasesModelado;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
/// <summary>
/// The ClasesLogica namespace.
/// </summary>
namespace Logica.Modulos.ClasesLogica
{   /*Título: LOG_Estructura
      Tipo: Clase
      Resumen:Hace el llamado de diferentes funciones de acceso a datos, sobrecargando métodos con objetos que viene del GUI. 
      Retorno: N/A
      Autor: Julián Gaona
      Fecha: 13/07/13*/
    /// <summary>
    /// Class LOG_Estructura.
    /// </summary>
    public class LOG_Estructura:Negocio
    {
        /*Título: CRE_Estructura
          Tipo: Método
          Variables: 
             
            objBD
            obj
         
          Resumen:Método recibe propiedades objeto de tipo MOD_Estructura, abre la conexión a la base de datos y  sobre carga la función CRE_Estructura de acceso a datos con el objeto. Al terminar cierra la conexión a la Base de Datos. 
          Retorno: N/A
          Autor: Julián Gaona
          Fecha: 13/07/13*/
        /// <summary>
        /// Crs the e_ estructura.
        /// </summary>
        /// <param name="obj">The object.</param>
        public void CRE_Estructura(MOD_Estructura obj)
        {
            try
            {
                this.IniciarTransaccion();

                AD_Estructura objBD = new AD_Estructura();

                objBD.CRE_Estructura(this.comando, obj);

                this.ConfirmarTransaccion();
            }
            catch (Exception exc)
            {
                this.DeshacerTransaccion();
                throw exc;
            }
        }


        //Elimina Estructura

        /// <summary>
        /// Des the l_ estructura.
        /// </summary>
        /// <param name="codigo">The codigo.</param>
        public void DEL_Estructura(int codigo)
        {
            try
            {
                this.IniciarTransaccion();

                AD_Estructura objBD = new AD_Estructura();

                objBD.DEL_Estructura(this.comando, codigo);

                this.ConfirmarTransaccion();
            }
            catch (Exception exc)
            {
                this.DeshacerTransaccion();
                throw exc;
            }
        }

        //Actualiza Estructura
        /// <summary>
        /// Ups the d_ estructura.
        /// </summary>
        /// <param name="obj">The object.</param>
        public void UPD_Estructura(MOD_Estructura obj)
        {
            try
            {
                this.IniciarTransaccion();

                AD_Estructura objBD = new AD_Estructura();

                objBD.UPD_Estructura(this.comando, obj);

                this.ConfirmarTransaccion();
            }
            catch (Exception exc)
            {
                this.DeshacerTransaccion();
                throw exc;
            }

        }

        //consultar grid Perfiles

        /// <summary>
        /// Ses the l_ grid_ estructura.
        /// </summary>
        /// <returns>List{MOD_Estructura}.</returns>
        public List<MOD_Estructura> SEL_Grid_Estructura()
        {
            try
            {
                this.AbrirConexion();

                AD_Estructura objBD = new AD_Estructura();

                List<MOD_Estructura> lista = objBD.SEL_Grid_Estructura(this.comando);

                this.CerrarConexion();

                return lista;
            }
            catch (Exception exc)
            {
                this.CerrarConexion();
                throw exc;
            }
        }

        //Seleccionar Estructura by id
        /// <summary>
        /// Ses the l_ estructura by identifier.
        /// </summary>
        /// <param name="USU_CODEstructura">The us u_ cod estructura.</param>
        /// <returns>MOD_Estructura.</returns>
        public MOD_Estructura SEL_EstructuraByID(int USU_CODEstructura)
        {
            try
            {
                this.AbrirConexion();

                AD_Estructura objBD = new AD_Estructura();

                MOD_Estructura objEstructura = objBD.SEL_EstructuraByID(this.comando, USU_CODEstructura);

                this.CerrarConexion();

                return objEstructura;
            }
            catch (Exception exc)
            {
                this.CerrarConexion();
                throw exc;
            }

        }
        /// <summary>
        /// Ses the l_ estructura by nombre.
        /// </summary>
        /// <param name="EST_NOMBRE">The es t_ nombre.</param>
        /// <returns>System.Int32.</returns>
        public int SEL_EstructuraByNombre(string EST_NOMBRE)
        {
            try
            {
                this.AbrirConexion();

                AD_Estructura objBD = new AD_Estructura();

                int cant_usu = objBD.SEL_EstructuraByNombre(this.comando, EST_NOMBRE);

                this.CerrarConexion();

                return cant_usu;
            }
            catch (Exception exc)
            {
                this.CerrarConexion();
                throw exc;
            }

        }
    }
}
